SEP 9 -- HTTP接口调用规范
Head
- Author: larry
- Status: draft
- Type: Standards
- Created: 2017-09-13
摘要
目前我们的服务器接口调用来自不同平台,在对HTTP报文的填充上,格式不太统一,包括UA和cookie等。
本文统一请求填充策略。
Cookie
正常的客户端,如果带有用户登录功能,则需要完整模拟浏览器对cookie的处理方式,也就是需要实现完整的session功能。
User-Agent
要求所有HTTP调用都必须传入UA头,包括浏览器页面、客户端、app、服务端调用。
UA格式
格式:product-1/version (comment) product-2/version (comment) product-3/version (comment) ....
各个产品按照重要性从高到底排序,注释部分是可选的。
例如系统已经添加了UA:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104,我们要添加采购APP的UA信息:GmPurchase/version
那么最终的结果是:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 GmPurchase/version。也就是把我们自己的添加到最后
有些调用http lib的客户端软件,lib本身不会添加UA,那么把就只自己的放进去就行了。
客户端UA举例
- 浏览器页面:因为浏览器会默认添加UA,这里暂时可选。
- 称重客户端:GmWeighting/version
- 称重客户端pad:GmWeightingPad/version
- 司机APP:GmDriver/version
- 微信商城:GmShop/version
- station:GmStation/version
- app:GmShopApp/version
- 小程序:GmShopMp/version
- 采购APP:GmPurchase/version
- 服务端station服务:GmWebStation/version,因为服务端暂时没有version区分,这里就暂时填写1
- 服务端merchandise服务:GmServiceMerchandise/version,版本固定为1。
名字仅供参考,请自行命名。
自定义Head
-
X-Guanmai-Client
客户端识别。包含多个部分,空格分隔。
客户端类型:内容直接使用UA中自身的部分。比如,GmWeighting/version
客户端唯一识别:一个能唯一识别当前客户端的串,主要用于客户端软件,页面端不需要。比如:e7c2a53fbffa56743cd797563748cc40。生成方式见后文。
多个部分合并后,X-Guanmai-Client: GmWeighting/version e7c2a53fbffa56743cd797563748cc40
-
X-Guanmai-Request-Id:请求唯一ID
请求唯一ID。目的是为了用这个id把一次请求的日志串联起来,便于分析和排查问题。
生成方式:md5(uuid()),例如 X-Guanmai-Request-Id: e7c2a53fbffa56743cd797563748cc40
客户端唯一识别(ID)
给每个用户客户端分配一个唯一ID,用来区分不同的客户端。
客户端唯一ID可能的使用场景:
- 在不需要用户使用不同子用户的情况下,控制用户同时可用客户端的数量。
- 协助排查问题。
- 分析统计客户端特征。
唯一ID的生成。
客户端每次启动的时候,检查本地是否保存了ID,如果没有,重新生成一个ID(uuid,去掉中间的'-',或者做一个md5)。生成的ID保存在本地。